package 前置知识_字符集.字符集的编码和解码操作;

// 目标: 掌握如何使用java代码完成对字符集的编码和解码

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class main {
    public static void main(String[] args) throws Exception {
        // java代码完成对字符的编码
        // 1. byte[] getBytes(): 使用平台的默认字符集将该String编码为一系列字节, 将结果储存到新的字节数组中

        // 2. byte[] getBytes(String charsetName): 使用指定的字符集将该String编码为一系列字节, 将结果储存到新的字节数组中

        // java代码完成对字符的解码
        // 3. String(byte[] bytes): 通过使用平台默认字符集解码指定的字节数组来构造新的String

        // 4. String(byte[] bytes, String charsetName): 通过指定的字符集解码指定的字节数组来构造新的String

        // a. 编码
        // 使用默认字符集
        String date = "a我b";
        byte[] bytes = date.getBytes(); // 默认是按照平台字符集(UTF-8)进行编码的
        System.out.println(Arrays.toString(bytes));
        // 按照指定字符集
        byte[] bytes1 = date.getBytes("GBK");
        System.out.println(Arrays.toString(bytes1));

        // b. 解码
        // 使用默认字符集
        String s = new String(bytes);
        String s1 = new String(bytes1);
        System.out.println(s);
        System.out.println(s1); // 会出现乱码, 因为字符集不同, bytes1是按照指定字符集编码的, 如果要解码也必须用指定的字符集解码
        // 按照指定字符集
        String s2 = new String(bytes1, "GBK");
        System.out.println(s2);
    }
}
